С. Копытин

Микроконтроллеры семейства Siemens C166

Общие характеристики

    Семейство 16-разрядных микроконтроллеров Siemens C166 содержит кристаллы с различным уровнем периферии и производительности, удовлетворяющие требованиям широкого спектра специфических приложений. Все члены семейства С161, С163, С164-CI, С165, 80С166, и C167 основываются на одной и той же базовой архитектуре и поддерживают единую систему команд (за исключением расширений для новых членов семейства). Это позволяет безболезненно переходить на следующий уровень производительности при реализации более сложного проекта.
    Микроконтроллеры (МК) строятся по модульному принципу, предполагающему разделение на три основных системы: ядро центрального процессора, контроллер прерываний и периферийные модули. Обмен данными внутри кристалла организован при помощи четырех внутренних шин:


Рис. 1

    Эффективное программирование МК С166 достигается благодаря мощной системе команд, поддерживающей вычисления над 8-, 16- и 32-разрядными операндами, операции умножения и деления (MUL, DIV), контроль границ стека, управление периферией через регистры специальных функций Special Function Register (SFR). Следует также отметить высокую пропускную способность, мощную систему адресации и поддержку программирования на языке высокого уровня. При тактовой частоте процессора 16, 20 и 25 МГц цикл выполнения команды составляет 125,100 и 80 нс соответственно.
Команды С166 можно разделить на следующие основные группы:
• Преобразования данных: арифметические и логические команды, операции быстрого умножения/деления (0,5/1,0 мкс при частоте 20 МГц), операции сдвигов на 1...15 разрядов за 100 нс, операции с битами во встроенном ОЗУ и регистрах SFR.
• Пересылки данных: команды MOV со всеми видами адресации, преобразование байта в слово, операции с системным стеком (PUSH, POP) с проверкой на переполнение и стеком пользователя (MOV с автоинкрементом и автодекрементом).
• Управления программой: команды перехода и вызова и условные переходы по 16 различным условиям (при выполнении условия для перехода требуется только один дополнительный цикл), программные и аппаратные ловушки (Traps), быстрые контекстные переключения за 100 нс.
• Специальные команды: сокращения энергопотребления и системного управления, непрерываемые по-следовательности команд, специальные приемы адресации.

Регистры общего назначения

    Традиционная CISC-архитектура имеет один или несколько специальных регистров, используемых для арифметических и логических операций. Например, в архитектуре 8051 — это один аккумулятор и 8 регистров общего назначения для хранения локальных переменных и промежуточных результатов вычислений. Регистры используются также для доступа к ячейкам памяти при косвенной или индексной адресации. В традиционной CISC-архитектуре много времени уходит на перемещение данных из медленной памяти в область активных регистров.


Рис. 2

    Архитектура RISC отличается значительно большим числом регистров общего назначения или General Purpose Registers (GPR), которые могут использоваться для локальных переменных, параметров и промежуточных результатов. Банк GPR в C166 содержит до шестнадцати 16-разрядных регистров общего назначения, каждый из которых может использоваться как аккумулятор, указатель при косвенной адресации или для хранения индекса. Регистровый банк включает до 8 регистров с пословной адресацией и 8 регистров с возможностью адресации младшего и старшего байта, все GPR адресуемы побитно. При столь большом числе регистров становится возможным держать все или почти все локальные и промежуточные переменные в GPR, что сокращает частоту обращений к внешней памяти и существенно повышает скорость.

    Следующим существенным преимуществом является то, что любой регистровый банк произвольно размещается во встроенном ОЗУ. Расположение активного регистрового банка определяет Context Pointer (CP), который содержит текущий абсолютный базовый адрес активного банка и указывает на регистр R0. Адресация 16 регистров внутри банка осуществляется с помощью 4-разрядного кода. Для выбора другого регистрового банка следует переключить содержимое CP. Возможность переключения активного регистрового банка в пределах встроенного ОЗУ существенно упрощает многозадачное управление.


Рис. 3

    Хорошим примером использования CP является обработка прерывания при работающей фоновой задаче. При обработке прерывания чем скорее будут сохранены активные GPR, тем лучше. Чтобы на время обработки переключиться на новый регистровый банк, CP текущего регистрового банка записывается в стек и переключается на новое значение. Это приводит к полному переключению контекста за один машинный цикл, но не распространяется на случай рекурсии.
    Гибридный метод, допускающий вход/выход в и из прерывания, использует указатель стека для динамического вычисления нового CP. Здесь при входе в прерывание требуемое число регистров вычитается из текущего значения SP и результат размещается в CP, старое значение CP заносится в стек. Новый регистровый банк размещается сверху старого стека, содержащего старое значение CP, и далее сразу же следует новый стек. При выходе из прерывания регистровый банк восстанавливается при выполнении команды выборки POP старого значения CP из стека. Далее значение SP увеличивается на размер регистрового банка.
    Еще одним преимуществом архитектуры RISC является перекрытие регистровых банков при вызове новой процедуры, когда часть нового регистрового банка, определяемого CP, соответствует банку, на который указывает старый CP (рис. 4).
    Таким образом, тщательная организация данных в общей области позволяет избежать загрузки и выгрузки параметров для передачи в подпрограмму и из подпрограммы. Местоположение передаваемых данных должно быть четко оговорено. Этот прием может быть реализован как для абсолютного указателя на регистровый банк, так и для относительного режима через стек. Следует заметить, что ограниченное количество методов адресации при выполнении команд MUL и DIV может привести к определенным неудобствам при использовании перекрытия регистровых банков, поскольку большинство задействованных в этих случаях операндов должно находиться в регистрах.

4-х ступенчатый конвейер команд

    Для увеличения скорости выполнения команд контроллеры семейства С166 содержат 4-х ступенчатый конвейер команд. За один машинный цикл C166 на различных ступенях конвейера выполняет одновременно до 4 команд. Это означает, что обработка каждой команды по времени длится четыре машинных цикла, хотя выполнение команды происходит в течение одного. Таким образом, конвейеризация имеет существенные преимущества для ускорения выполнения последовательности команд при достаточной пропускной способности шины. Время исполнения большинства команд составляет 100 нс при тактовой частоте 20 МГц.




        R3'   ;Регистры подпрограммы
        R2'   ;
   R7   R1'   ;Общий регистр, R7 == R1'
CP'R6   RO'   ;Общий регистр, R6 == R0'
   R5         ;Регистры вызывающей программы
   R4         ;
   R3         ;
   R2         ;
   R1         ;
CP R0         ;

;==================================================================
MODULE 1
;Назначение GPR на локальные переменные в вызывающей программе
x_var         LIT        'R0'       ;Локальная переменная
y_var         LIT        'R1'       ;Локальная переменная
parm1         LIT        'R6'       ;Передаваемый параметр 1
parm2         LIT        'R7'       ;Передаваемый параметр 2
result        LIT        'R6'       ;Возвращаемое значение

;==================================================================
MODULE 2
;Назначение GPR на локальные переменные в подпрограмме
a_var         LIT        'R2'       ;Локальная переменная
b_var         LIT        'R3'       ;Локальная переменная
input1        LIT        'R0'       ;Получаемый параметр 1
input2        LIT        'R1'       ;Получаемый параметр 2
ret1          LIT        'R0'       ;Окончательный результат R0

Рис. 4

    Оптимизированная обработка команд перехода и вызова (Branch Instruction). В то время как при выполнении обычных команд конвейер не вызывают проблем, команды перехода и вызова требуют выполнения специальных мероприятий. Ко времени достижения командой перехода или вызова фазы Execute следующая по адресу перехода команда только начинает исполнение фазы Fetch. Следовательно, команда, проходящая в конвейере на фазе Decode сразу вслед за командой перехода, должна игнорироваться. В данном случае вместо полного очищения конвейера используется переход с задержкой (“delayed branch”).


Рис. 5

    Ситуация с условным переходом более сложная, так как неясно, будет ли следующая команда соответствовать результату проверки условия или нет. Поэтому при выполнении условия перехода вставляется холостая команда на фазе Decode и требуется дополнительный машинный цикл. Для ситуаций без перехода холостая команда не вставляется и один машинный цикл экономится. Таким образом, для команд Jump, Cond. Jump, Call, Return,... обычно требуется только один дополнительный машинный цикл для выборки команды из новой области памяти.
    Обработка меток (Loop Control). Обычная задача в управляющих приложениях — просмотр таблиц, который состоит в повторном переходе по одному и тому же фиксированному адресу. Если в данном случае не предпринять специальных шагов, то при обработке каждой метки возникает бесполезный машинный цикл. Поэтому здесь осуществлен механизм кэширования (Jump Cache). При первичной обработке метки вставляется пустая команда и как и раньше вхолостую тратится один машинный цикл. Однако, адрес таблицы запоминается в кэш-памяти и при дальнейшем прохождении через метку адрес извлекается из кэш и вставляется непосредственно в фазу Decode. Таким образом, в данном случае переход осуществляется за один машинный цикл.
    Краевые эффекты конвейера. В фазах Fetch и Decode может одновременно осуществляться запрос шины, если на завершающей фазе текущей команды осуществляется чтение. Предупреждение конфликтов осуществляет контроллер внешней шины External Bus Controller, управляя приоритетами записи, выборки и чтения.
    Следует упомянуть также о краевых эффектах конвейера, которые могут возникнуть на фазе Write Back при использовании адреса, уже измененного на фазе Fetch. Хотя специальное аппаратное устройство искусственно передвигает вперед операнды чтения и записи, необходимо постоянно об этом помнить.
    Команды умножения и деления занимают 5 и 10 машинных циклов соответственно и имеют сложный операционный код. Поскольку эти команды длятся больше одного цикла, в конвейер на стадии Decode вставляются холостые команды.

Сравнение С166 и других

    Сравнение микроконтроллеров является сложной задачей. Обычно каждый производитель кристалла предлагает Benchmark-тесты, показывающие, что его микроконтроллер самый лучший. В то же время сравнительные характеристики на диаграмме, опубликованные фирмой Siemens, полностью совпадают с данными фирм, поддерживающих кристаллы нескольких производителей.


Рис. 6

Таблица

Команды 80C196 Циклы 80C166 Циклы Коэффициент
Move word direct LD x, y 4 MOV Rw, Rw 2 2
Move word indirect LD x, [y] 5 MOV Rw, [Rw] 2 3
Move word indexed LD x, z[y] 7 MOV Rw, [Rw+#d16] 4 3
Add words direct ADD x, y 4 ADD Rw, Rw 2 2
Add words indirect ADD x, [y] 5 ADD Rw, [Rw] 2 3
Add words indexed ADD x, x[y] 7 ADD Rw, [RW+#d16] 4 3
Multiply words direct MUL x, y 16 MUL Rw, Rw 10 6
Divide words direct DIV x, y 26 DIV Rw 20 6
16 bit uncond.jump LJMP #16 7 JMPA cc_UC, #d16 4 3
Shift Left 16 places SHL x, #16 22 SHL Rw, Rw 4 18
Software interrupt TRAP 16 TRAP #n 4 12
Return from subroutine RET 11 RET 2 9
Direct data stack PUSH x 6 PUSH Rw 2 4
Число команд 85   55    

    В таблице приведено сравнение CISC-ядра 196 и RISC-ядра С166, которое проводилось исходя из числа машинных циклов выполнения команды.
    При сопоставлении простых команд видно, что CISC-архитектура требует примерно вдвое больше циклов, чем RISC-архитектура. Для команд PUSH и POP CISC-архитектура существенно медленнее и коэффициент значительно больше, чем 4. Если же говорить в целом о готовой программе, то преимущества RISC приводят к сокращению времени выполнения более чем на 50%.
    Еще одним важным параметром для управляющих приложений является время контекстного переключения. Данное сравнение производилось для операционной системы реального времени RTOS CMX при выполнении для различных микроконтроллеров следующих условий:

    Полученный в результате фактор скорости рассчитывался исходя из того, что все кристаллы работают на одинаковой приведенной внутренней тактовой частоте 20 МГц: 80C166 — 1,0; 68332 — 2,26; 68HC16 — 3,10; 80196 — 3,38. Это означает, что мик-роконтроллер 80С166 более чем в 2 ра-за эффективнее справляется с управляющими приложениями, требующи-ми постоянного переключения задач.
    Микроконтроллеры семейства Siemens C166 отличаются гибкостью и легко адаптируемы практически для любого приложения. У МК этого семейства есть множество других возможностей, с которыми можно ознакомиться на наших Internet-страницах или же в руководствах пользователя, которые доступны на сайте Siemens www.smi.siemens.com/mc.html. Также рекомендуем электронный справочник C166 Primer http://www.hitex.com/automation/docs/166primer/, содержащий весьма полезную информацию о проектировании устройств на основе семейства С166, его архитектуре и советы по программированию.
    Эта статья написана специалистами фирмы К&П Электроника на основе материалов фирм Siemens и Hitex и своего собственного опыта. Мы надеемся, что приведенная информация окажется полезной при знакомстве с МК Siemens С166. Продолжение следует...

Фирма «К&П Электроника»
196240 Санкт-Петербург, Пулковское шоссе 9/3
Тел./факс (812) 325-2792
E-mail:
kpe@mail.wplus.net
Internet:
http://www.kpe.sp.ru

Published by NewIT Labs
NEW IT Labs